/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.ipartek.formacion.gestformwww.controlador;

import com.ipartek.formacion.gestformwww.modelo.ModeloAlumno;
import com.ipartek.formacion.gestformwww.modelo.ModeloCurso;
import com.ipartek.formacion.gestformwww.modelo.ModeloEmpresa;
import com.ipartek.formacion.gestformwww.modelo.ModeloProcedencia;
import com.ipartek.formacion.gestformwww.modelo.beans.Alumno;
import com.ipartek.formacion.gestformwww.modelo.beans.Curso;
import com.ipartek.formacion.gestformwww.modelo.beans.Empresa;
import com.ipartek.formacion.gestformwww.modelo.beans.FiltroAlumno;
import com.ipartek.formacion.gestformwww.modelo.beans.Procedencia;
import com.ipartek.formacion.gestformwww.modelo.beans.excepciones.GestorFormacionExcepcion;
import java.util.ArrayList;
import java.util.ResourceBundle;

import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 *
 * @author Borja y Xarles
 */
public class VisualizarAsignarAlumnoAccion implements Accion{
       
       private final String listarcursos = "listar-cursos-accion";
/**
 * Visualiza los alumnos que no estan en un determinado curso
 * @param servlet
 * @param request
 * @param response
 * @return el router
 */
    public AccionRouter ejecuta(HttpServlet servlet, HttpServletRequest request, HttpServletResponse response) {
        HttpSession sesion = request.getSession(false);
        AccionRouter router = null;
        FiltroAlumno filtro = null;
         AccionServlet as=(AccionServlet) servlet;
        String path=null;
        int numPags;
        int numeroalumnos = 0;
        int idCurso=0;
        Curso curso = null;
        boolean existecurso=false;
        ArrayList<Alumno> alumnos = null;
        ModeloAlumno modelo = (ModeloAlumno) servlet.getServletContext().getAttribute("ModeloAlumno");
        ModeloEmpresa mempresa = (ModeloEmpresa) servlet.getServletContext().getAttribute("ModeloEmpresa");
        ModeloProcedencia mprocedencia = (ModeloProcedencia) servlet.getServletContext().getAttribute("ModeloProcedencia");
        ModeloCurso mcurso = (ModeloCurso) servlet.getServletContext().getAttribute("ModeloCurso");
        ArrayList<Empresa> empresas = new ArrayList<Empresa>();
        ArrayList<Procedencia> procedencias = new ArrayList<Procedencia>();

        ResourceBundle bundle = (ResourceBundle) servlet.getServletContext().getAttribute("acciones-mapeo");
        if (sesion.getAttribute("usuario") != null) {
            if (sesion.getAttribute("filtroalumnosasignar") != null) {
                filtro = (FiltroAlumno) sesion.getAttribute("filtroalumnosasignar");
            } else {
                filtro = new FiltroAlumno(bundle);
            }



            if(Verificador.numeroValido(request.getParameter("idCurso")) || (request.getAttribute("idCurso") != null)){
                if (request.getAttribute("idCurso") != null) {
                    idCurso = (Integer) request.getAttribute("idCurso");
                } else {
                    idCurso = Integer.parseInt(request.getParameter("idCurso"));
                }

                try {
                    existecurso = mcurso.existecurso(idCurso);
                } catch (GestorFormacionExcepcion ex) {
                    Logger.getLogger(VisualizarAsignarAlumnoAccion.class.getName()).log(Level.SEVERE, null, ex);
                    sesion.setAttribute("excepciones", ex.getMessage());
                }
             if(existecurso){
                filtro.setNIF(request.getParameter("filtroDNIAlumno"));
                filtro.setNombre(request.getParameter("filtroNombreAlumno"));
                filtro.setPrimerape(request.getParameter("filtroApe1Alumno"));
                filtro.setSegundoape(request.getParameter("filtroApe2Alumno"));
                filtro.setElementospag(request.getParameter("RegistroPagina"));
                filtro.setNocurso(true);
                filtro.setColumnafiltrar(request.getParameter("filtroColumna"));
                filtro.setOrden(request.getParameter("filtroOrden"));
                filtro.setPagsiguiente(request.getParameter("id"));
                filtro.setCurId(idCurso);

                sesion.setAttribute("filtroalumnosasignar", filtro);

                try {
                    alumnos=modelo.listarAlumnos(filtro);
                    empresas = mempresa.listarEmpresas();
                    procedencias = mprocedencia.listarProcedencia();
                    numeroalumnos=modelo.contarAlumnos(filtro);
                    curso = mcurso.visualizarCurso(idCurso);
                } catch (GestorFormacionExcepcion ex) {
                    Logger.getLogger(VisualizarAsignarAlumnoAccion.class.getName()).log(Level.SEVERE, null, ex);
                    sesion.setAttribute("excepciones", ex.getMessage());
                }

                request.setAttribute("listaAlumnosAsignar", alumnos);
                numPags = filtro.getElementospag();

                if (numeroalumnos == 0) {
                    ResourceBundle errores = (ResourceBundle) servlet.getServletContext().getAttribute("errores-mapeo");
                    request.setAttribute("error", errores.getString("error-sin-resultados"));
                }
                request.setAttribute("numeroAlumnos", numeroalumnos);
                int totalpaginas = numeroalumnos / numPags;
                if ((numeroalumnos % numPags) != 0) {
                    totalpaginas++;
                }
                request.setAttribute("curNom", curso.getCurNom());
                request.setAttribute("totalPagAsignarAlumno", totalpaginas);
                request.setAttribute("contenido", "crear-asignar-alumno");
                request.setAttribute("listaEmpresas", empresas);
                request.setAttribute("listaProcedencias", procedencias);

                router = new AccionRouter("principal");
            }
            else {
                router = new AccionRouter("inicio", false);
            }
        } else {
            router = new AccionRouter("inicio", false);
        }
        }else{
            try {
                router=as.getFactory().getAction(as.getNombreClaseRecurso(listarcursos),servlet.getClass().getClassLoader()).ejecuta(servlet, request, response);
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(VisualizarAsignarAlumnoAccion.class.getName()).log(Level.SEVERE, null, ex);
            } catch (InstantiationException ex) {
                Logger.getLogger(VisualizarAsignarAlumnoAccion.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IllegalAccessException ex) {
                Logger.getLogger(VisualizarAsignarAlumnoAccion.class.getName()).log(Level.SEVERE, null, ex);
            }
           
        }


        return router;
    }

   
}

